38 research outputs found
Algebraic Property Graphs
In this paper, we use algebraic data types to define a formal basis for the
property graph data models supported by popular open source and commercial
graph databases. Developed as a kind of inter-lingua for enterprise data
integration, algebraic property graphs encode the binary edges and key-value
pairs typical of property graphs, and also provide a well-defined notion of
schema and support straightforward mappings to and from non-graph datasets,
including relational, streaming, and microservice data commonly encountered in
enterprise environments. We propose algebraic property graphs as a simple but
mathematically rigorous bridge between graph and non-graph data models,
broadening the scope of graph computing by removing obstacles to the
construction of virtual graphs
Functional Query Languages with Categorical Types
We study three category-theoretic types in the context of functional query languages (typed lambda-calculi extended with additional operations for bulk data processing). The types we study are:Engineering and Applied Science
Categorical Data Integration for Computational Science
Categorical Query Language is an open-source query and data integration
scripting language that can be applied to common challenges in the field of
computational science. We discuss how the structure-preserving nature of CQL
data migrations protect those who publicly share data from the
misinterpretation of their data. Likewise, this feature of CQL migrations
allows those who draw from public data sources to be sure only data which meets
their specification will actually be transferred. We argue some open problems
in the field of data sharing in computational science are addressable by
working within this paradigm of functorial data migration. We demonstrate these
tools by integrating data from the Open Quantum Materials Database with some
alternative materials databases.Comment: 10 pages, 5 figure
Recommended from our members
Certified Web Services in Ynot
In this paper we demonstrate that it is possible to implement certi ed web systems in a way not much di erent from writing
Standard ML or Haskell code, including use of imperative features like pointers, les, and socket I/O. We present a web-based course gradebook application developed with Ynot, a Coq library for certi ed imperative programming.We add a dialog-based I/O system to Ynot, and we extend Ynot's underlying Hoare logic with event traces to reason about I/O be- havior. Expressive abstractions allow the modular certi cation of both high level speci cations like privacy guarantees and low level properties like memory safety and correct parsing.Engineering and Applied Science
Recommended from our members
Toward a verified relational database management system
We report on our experience implementing a lightweight, fully verified relational database management system (RDBMS). The functional specification of RDBMS behavior, RDBMS implementation, and proof that the implementation meets the specification are all written and verified in Coq. Our contributions include: (1) a complete specification of the relational algebra in Coq; (2) an efficient realization of that model (B+ trees) implemented with the Ynot extension to Coq; and (3) a set of simple query optimizations that are proven to respect both semantics and run-time cost. In addition to describing the design and implementation of these artifacts, we highlight the challenges we encountered formalizing them, including the choice of representation for (finite) relations of typed tuples and the challenges of reasoning about data structures with complex sharing. Our experience shows that though many challenges remain, building fully-verified systems software in Coq is within reach.Engineering and Applied Science
Recommended from our members
Effective Interactive Proofs for Higher-Order Imperative Programs
We present a new approach for constructing and verifying higher-order, imperative programs using the Coq proof assistant. We build on the past work on the Ynot system, which is based on Hoare Type Theory. That original system was a proof of concept, where every program verification was accomplished via laborious manual proofs, with much code devoted to uninteresting low-level details. In this paper, we present a re-implementation of Ynot which makes it possible to implement fully-verified, higher-order imperative programs with reasonable proof burden. At the same time, our new system is implemented entirely in Coq source files, showcasing the versatility of that proof assistant as a platform for research on language design and verification. Both versions of the system have been evaluated with case studies in the verification of imperative data structures, such as hash tables with higher-order iterators. The verification burden in our new system is reduced by at least an order of magnitude compared to the old system, by replacing manual proof with automation. The core of the automation is a simplification procedure for implications in higher-order separation logic, with hooks that allow programmers to add domain-specific simplification rules.
We argue for the effectiveness of our infrastructure by verifying a number of data structures and a packrat parser, and we compare to similar efforts within other projects. Compared to competing approaches to data structure verification, our system includes much less code that must be trusted; namely, about a hundred lines of Coq code defining a program logic. All of our theorems and decision procedures have or build machine-checkable correctness proofs from first principles, removing opportunities for tool bugs to create faulty verifications.Engineering and Applied Science